package com.tecklab.demo.service;

import com.tecklab.demo.common.Result;
import com.tecklab.demo.entity.UserEntity;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

public interface UserService {

    /**
     * 用户登录验证
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录成功的用户信息
     */
    UserEntity login(String username, String password);

    /**
     * 获取所有用户
     *
     * @return 用户列表
     */
    List<UserEntity> getAllUsers();

    /**
     * 根据ID获取用户
     *
     * @param id 用户ID
     * @return 用户信息
     */
    UserEntity getUserById(Integer id);

    /**
     * 添加用户
     *
     * @param user 用户信息
     * @return 添加后的用户信息
     */
    int addUser(UserEntity user);

    /**
     * 更新用户
     *
     * @param id   用户ID
     * @param user 更新的用户信息
     * @return 更新后的用户信息
     */
    UserEntity updateUser(Integer id, UserEntity user);

    /**
     * 删除用户
     *
     * @param id 用户ID
     */
    void deleteUser(Integer id);

    /**
     * 检查用户名是否存在
     *
     * @param username 用户名
     * @return 是否存在
     */
    boolean existsByUsername(String username);

    /**
     * 检查用户是否是管理员
     *
     * @param id 用户ID
     * @return 是否是管理员
     */
    boolean isAdmin(Integer id);

    /**
     * @param size
     */
    void batchCreateUser(int size);

    /**
     * 批量删除用户
     *
     * @param idList 用户ID列表
     */
    Result batchDeleteUser(@RequestBody List<Integer> idList);

    Result<String> batchResetPwd(List<Integer> idList);
}